package midend.IR_Instruction;

import midend.IR_Value.IR_BaseBlock;
import midend.IR_Value.IR_Value;

import java.util.List;

public class Move_Instruction extends Instruction{
    // op Value src, Value dst
    public Move_Instruction(List<IR_Value> op, IR_BaseBlock bb) {
        super(op, bb);
        addValue(getSrc());
        addValue(getDst());
    }

    public void updateop(int index, IR_Value newValue) {
        if(index == 0) {
            setSrc(newValue);
        }
        else {
            setDst(newValue);
        }
    }
    public IR_Value getSrc() {
        return get_op().get(0);
    }

    public IR_Value getDst() {
        return get_op().get(1);
    }

    public void setSrc(IR_Value value) {
        get_op().set(0, value);
    }

    public void setDst(IR_Value value) {
        get_op().set(1, value);
    }

    public String toString() {
        IR_Value dst = getDst();
        IR_Value src = getSrc();
        return "move " + dst.get_Type() + " " + dst.get_ValueName() + ", " + src.get_ValueName();
    }
}
